'\" te
.\"  Copyright (c) 2007, Sun Microsystems, Inc.  All Rights Reserved
.\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License").  You may not use this file except in compliance with the License.
.\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing.  See the License for the specific language governing permissions and limitations under the License.
.\" When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE.  If applicable, add the following below this CDDL HEADER, with the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner]
.TH SIP_GET_REQUEST_METHOD 3SIP "November 22, 2021"
.SH NAME
sip_get_request_method, sip_get_response_code, sip_get_response_phrase,
sip_get_sip_version \- obtain attributes from the start line in a SIP message
.SH SYNOPSIS
.nf
\fBcc\fR [ \fIflag\fR ... ] \fIfile\fR ... \fB-lsip\fR [ \fIlibrary\fR ... ]
#include <sip.h>

\fBsip_method_t\fR \fIsip_get_request_method\fR(\fBconst sip_msg_t\fR \fIsip_msg\fR,
     \fBint *\fR\fIerror\fR);
.fi

.LP
.nf
\fBint\fR \fIsip_get_response_code\fR(\fBsip_msg_t\fR \fIsip_msg\fR,
     \fBint *\fR\fIerror\fR);
.fi

.LP
.nf
\fBconst sip_str_t *\fR\fIsip_get_response_phrase\fR(\fBsip_msg_t\fR \fIsip_msg\fR,
     \fBint *\fR\fIerror\fR);
.fi

.LP
.nf
\fBconst sip_str_t*\fR\fIsip_get_sip_version\fR(\fBsip_msg_t\fR \fIsip_msg\fR,
     \fBint *\fR\fIerror\fR);
.fi

.SH DESCRIPTION
For functions that return a pointer of type \fBsip_str_t\fR, \fBsip_str_t\fR is
supplied by:
.sp
.in +2
.nf
typedef struct sip_str {
     char	*sip_str_ptr;
     int	sip_str_len;
}sip_str_t;
.fi
.in -2

.sp
.LP
The \fIsip_str_ptr\fR parameter points to the start of the returned value and
\fIsip_str_len\fR supplies the length of the returned value.
.sp
.LP
For example, given the following request line in a \fBSIP\fR message
\fIsip_msg\fR that is input to \fBsip_get_request_uri_str()\fR:
.sp
.in +2
.nf
FROM : <Alice sip:alice@example.com>;tag=1928301774
.fi
.in -2

.sp
.LP
the return is a pointer to \fIsip_str_t\fR with the \fIsip_str_ptr\fR member
pointing to "\fBA\fR" of \fBAlice\fR and \fIsip_str_len\fR being set to
\fB5\fR, the length of \fBAlice\fR.
.sp
.LP
Access functions for headers that can have multiple values take the value as
the input, while those that can have only one value take the \fBSIP\fR message
\fIsip_msg\fR as the input.
.sp
.LP
The \fBsip_get_request_method()\fR function will return the \fBSIP\fR method
from the request line in the  \fBSIP\fR message \fIsip_msg\fR. The method can
be one of the following:
.br
.in +2
INVITE
.in -2
.br
.in +2
ACK
.in -2
.br
.in +2
OPTIONS
.in -2
.br
.in +2
BYE
.in -2
.br
.in +2
CANCEL
.in -2
.br
.in +2
REGISTER
.in -2
.br
.in +2
REFER
.in -2
.br
.in +2
INFO
.in -2
.br
.in +2
SUBSCRIBE
.in -2
.br
.in +2
NOTIFY
.in -2
.br
.in +2
PRACK
.in -2
.br
.in +2
UNKNOWN
.in -2
.sp
.LP
The \fBsip_get_response_code()\fR function will return the response code
\fIresponse\fR from the request line in the  \fBSIP\fR message \fIsip_msg\fR.
.sp
.LP
The \fBsip_get_response_phrase()\fR function will return the response phrase
\fIresponse\fR from the request line in the  \fBSIP\fR message \fIsip_msg\fR.
.sp
.LP
The \fBsip_get_sip_version()\fR function will return the version of the
\fBSIP\fR protocol from the request or the response line in the \fBSIP\fR
message \fIsip_msg\fR.
.SH RETURN VALUES
For functions that return a pointer to \fIsip_str_t\fR, the return value is the
specified value on success or \fBNULL\fR in case of error. For functions that
return an integer, the return value is the specified value on success and
\fB-1\fR on error.
.sp
.LP
The value of \fBerrno\fR is not changed by these calls in the event of an
error.
.SH ERRORS
These functions take a pointer to an integer \fIerror\fR as an argument. If the
error is non-null, one of the following values is set:
.sp
.ne 2
.na
\fB\fBEINVAL\fR\fR
.ad
.RS 10n
The input \fBSIP\fR message \fIsip_msg\fR or the header value is null; or the
specified header/header value is deleted.
.RE

.sp
.ne 2
.na
\fB\fBEPROTO\fR\fR
.ad
.RS 10n
The header value is not present or invalid. The parser could not parse it
correctly.
.RE

.sp
.ne 2
.na
\fB\fBENOMEM\fR\fR
.ad
.RS 10n
There is an error allocating memory for the return value.
.RE

.sp
.LP
On success, the value of the location pointed to by \fIerror\fR is set to
\fB0\fR.
.SH ATTRIBUTES
See \fBattributes\fR(7) for descriptions of the following attributes:
.sp

.sp
.TS
box;
c | c
l | l .
ATTRIBUTE TYPE	ATTRIBUTE VALUE
_
Interface Stability	Committed
_
MT-Level	MT-Safe
.TE

.SH SEE ALSO
.BR libsip (3LIB)
